const express = require("express");
const router = express.Router();
//读取文件，删除文件
const fs = require("fs");
//路径
const path = require("path");
//导入上传文件的包
const multer = require("multer");
// 导入生成id的包
const { v4: uuidv4 } = require("uuid");
// 导入jwt token工具
const JwtUtil = require("../../utils/jwt");

// 定制上传文件的信息（文件名、文件路径等）
const storage = multer.diskStorage({
    // 设置保存文件的路径
    destination: function (req, file, callback) {
        callback(null, "public/upload/banner");
    },
    filename: function (req, file, callback) {
        // 将保存文件名设置为 字段名 + 时间戳，
        // 比如 logo-1478521468943
        let suffix = file.mimetype.split("/")[1];
        //获取文件格式
        callback(null, file.fieldname + "-" + Date.now() + "." + suffix);
    },
});

// 生成的图片放入upload文件夹下
const upload = multer({ storage: storage });
//获取服务器地址
let { HOST_URL } = require("../../config/host");
//上传图片预览
//接口1:上传图片/预览图片
router.post("/upload_img", upload.single("photo"), async (req, res) => {
    //从请求头对象获取token信息
    let token = req.headers["token"];
    // 判断用户登录状态
    // 请求需要进行token校验
    let jwt = new JwtUtil(token);
    // 返回一个对象（包含用户身份）
    let result = jwt.verifyToken();
    if (result == "err") {
        res.send({
            code: -1,
            msg: "登录已过期,请重新登录",
        });
    } else {
        // 定义路径
        let picUrl = `${HOST_URL}/upload/banner/${req.file.filename}`;
        //返回上传头像的文件路径
        res.send({
            code: 200,
            picUrl,
            msg: "轮播图上传预览成功",
        });
    }
});
// 接口2：删除预览图片
router.post("/delete_img", async (req, res) => {
    let { picUrl } = req.body;
    return new Promise((resolve, reject) => {
        //通过slice方法，分割出图片前面的url地址
        let index = picUrl.indexOf("upload");
        if (index > 0) {
            let temp_path = path.join(__dirname, "../../public/", picUrl.slice(index));
            // console.log("--->", temp_path);
            // fs.unlink删除文件
            fs.unlink(temp_path, function (error) {
                if (error) {
                    reject({
                        code: -1,
                        msg: "删除图片失败。",
                    });
                } else {
                    //删除图片文件成功
                    resolve({
                        code: 200,
                        msg: "删除图片成功。",
                    });
                }
            });
        } else {
            res.send({
                code: -1,
                msg: "默认头像不用删除。",
            });
        }
    });
});
//删除图片预览
//发布广告轮播图
//广告轮播图列表
//删除广告轮播图
module.exports = router;
